<?php
/**
 * BasicPHP-FF
 * 模板 类
 * @author wangji <j@wj45.net>
 */

class TPL
{
    private $_data;
    
    public function __construct() {}
    
    /**
     * 设置模板数据
     * @param array $data
     */
    public function assign($data) {
        if ( is_array($data) ) {
            $this->_data = $data;
            $rt = true;
        } else {
            $rt = false;
        }
        return $rt;
    }
    
    /**
     * 置入变量并获取模板内容
     */
    public function fetch($name) {
        if ( is_array($this->_data) ) {
            extract($this->_data);  //导入变量
        }
        $file = TPL_DIR . APP_STR .'/'. $name;
		$tplData = file_get_contents($file);
        set_error_handler(array($this, 'errorHandler'), ini_get('error_reporting'));  //错误报告处理
        ob_start();
		eval('?>' . $tplData);
		$rs = ob_get_contents();
		ob_clean();
        restore_error_handler();
		return $rs;
	}
    
    /**
     * 显示模板
     */
    public function display($name) {
		echo $this->fetch($name);
	}

	public function getRender($name, $data) {
		$this->assign($data);
		return $this->fetch($name);
	}
	
	public function render($name, $data) {
		$this->assign($data);
		echo $this->fetch($name);
	}
    
    /**
     * 处理模板错误报告
     */
    private static function errorHandler($code, $msg) {
        echo '<br/><b>TPL</b>: ' . $msg . '<br/>';
    }
}

/* ------ EOF ------ */
